﻿@namespace AntDesign.Internal
@typeparam TValue
@inherits DatePickerPanelBase<TValue>

<div class="@(PrefixCls)-header" @ref="Ref">
    @if (ShowSuperPreChange)
    {
        <button tabindex="-1" class="@(PrefixCls)-header-super-prev-btn" @onclick="e => ChangePickerYearValue(-SuperChangeDateInterval)">
            <span class="@(PrefixCls)-super-prev-icon"></span>
        </button>
    }

    @if (ShowPreChange)
    {
        <button tabindex="-1" class="@(PrefixCls)-header-prev-btn" @onclick="e => ChangePickerMonthValue(-ChangeDateInterval)">
            <span class="@(PrefixCls)-prev-icon"></span>
        </button>
    }

<div class="@(PrefixCls)-header-view">
    @if (Locale.Lang.MonthBeforeYear)
    {
        @if (Picker.IsIn(DatePickerType.Date, DatePickerType.Week))
        {
            <button type="button" tabindex="-1" class="@(PrefixCls)-month-btn" @onclick="e => PopUpPicker(DatePickerType.Month)">
                @(PickerValue.ToString(Locale.Lang.MonthFormat, CultureInfo))
            </button>
        }
        @if (Picker.IsIn(DatePickerType.Date, DatePickerType.Month, DatePickerType.Quarter, DatePickerType.Week))
        {
            <button type="button" tabindex="-1" class="@(PrefixCls)-year-btn" @onclick="e => PopUpPicker(DatePickerType.Year)">
                @(PickerValue.ToString(Locale.Lang.YearFormat, CultureInfo))
            </button>
        }
    }
    else
    {
        @if (Picker.IsIn(DatePickerType.Date, DatePickerType.Month, DatePickerType.Quarter, DatePickerType.Week))
        {
            <button type="button" tabindex="-1" class="@(PrefixCls)-year-btn" @onclick="e => PopUpPicker(DatePickerType.Year)">
                @(PickerValue.ToString(Locale.Lang.YearFormat, CultureInfo))
            </button>
        }
        @if (Picker.IsIn(DatePickerType.Date, DatePickerType.Week))
        {
            <button type="button" tabindex="-1" class="@(PrefixCls)-month-btn" @onclick="e => PopUpPicker(DatePickerType.Month)">
                @(PickerValue.ToString(Locale.Lang.MonthFormat, CultureInfo))
            </button>
        }

    }

    @if (Picker.IsIn(DatePickerType.Year))
    {
        int startYear = PickerValue.Year / 10 * 10;
        int showCount = 9;

        if (startYear < DateTime.MinValue.Year)
        {
            startYear = DateTime.MinValue.Year;
            showCount = 10;
        }

        <button type="button" class="@(PrefixCls)-decade-btn" @onclick="e => PopUpPicker(DatePickerType.Decade)">
            @(startYear)-@(startYear + showCount)
        </button>
    }
    @if (Picker.IsIn(DatePickerType.Decade))
    {
        int startYear = PickerValue.Year / 100 * 100;

        if (startYear < DateTime.MinValue.Year)
        {
            startYear = DateTime.MinValue.Year + 10;
        }

        <button type="button" class="@(PrefixCls)-decade-btn">
            @(startYear)-@(startYear + 99)
        </button>
    }
</div>

    @if (ShowNextChange)
    {
        <button tabindex="-1" class="@(PrefixCls)-header-next-btn" @onclick="e => ChangePickerMonthValue(ChangeDateInterval)">
            <span class="@(PrefixCls)-next-icon"></span>
        </button>
    }
    @if (ShowSuperNextChange)
    {
        <button tabindex="-1" class="@(PrefixCls)-header-super-next-btn" @onclick="e => ChangePickerYearValue(SuperChangeDateInterval)">
            <span class="@(PrefixCls)-super-next-icon"></span>
        </button>
    }
</div>

@code {
    [Parameter]
    public int SuperChangeDateInterval { get; set; } = 1;
    [Parameter]
    public int ChangeDateInterval { get; set; } = 1;
    [Parameter]
    public bool ShowSuperPreChange { get; set; } = true;
    [Parameter]
    public bool ShowPreChange { get; set; } = true;
    [Parameter]
    public bool ShowNextChange { get; set; } = true;
    [Parameter]
    public bool ShowSuperNextChange { get; set; } = true;
}